﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;
using System.Data;

using Biblioteca.Model;

using Biblioteca.Conexao;


namespace Biblioteca.Repositorio
{

    public class RepositorioCliente
    {

       SqlConnection cone = Conexao2.obterConexao2().conectar();


        public List<Cliente> listar_Cliente()
        {

            List<Cliente> retorno = new List<Cliente>();
            try
            {

                SqlCommand sql = new SqlCommand("SELECT codCli ,razaoSocial,cnpj,endereco,cidade,uf,contato,telefone FROM Cliente", cone);

                SqlDataReader dataReader = sql.ExecuteReader();

                while (dataReader.Read())
                {
                    Cliente c = new Cliente();

                    c.CodCli = dataReader.GetInt32(dataReader.GetOrdinal("codCli"));
                    c.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial"));
                    c.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj"));
                    c.Endereco = dataReader.GetString(dataReader.GetOrdinal("endereco"));
                    c.Cidade = dataReader.GetString(dataReader.GetOrdinal("cidade"));
                    c.Uf = dataReader.GetString(dataReader.GetOrdinal("uf"));
                    c.Contato = dataReader.GetString(dataReader.GetOrdinal("contato"));
                    c.Telefone = dataReader.GetString(dataReader.GetOrdinal("telefone"));
                    retorno.Add(c);

                }

                return retorno;

            }
            catch (Exception e)
            {


                throw e;
            }


            finally
            {

                Conexao2.obterConexao2().desconectar(cone);

            }
        }



        public void incluir_Cliente(Cliente cli)
        {

            try
            {
              

                SqlCommand sql = new SqlCommand("insert into Cliente values (@razaoSocial, @cnpj, @endereco, @cidade, @uf, @contato, @telefone)", cone);

                sql.Parameters.AddWithValue("@razaoSocial", cli.RazaoSocial);
                sql.Parameters.AddWithValue("@cnpj", cli.Cnpj);
                sql.Parameters.AddWithValue("@endereco", cli.Endereco);
                sql.Parameters.AddWithValue("@cidade", cli.Cidade);
                sql.Parameters.AddWithValue("@uf", cli.Uf);
                sql.Parameters.AddWithValue("@contato", cli.Contato);
                sql.Parameters.AddWithValue("@telefone", cli.Telefone);

                sql.ExecuteNonQuery();
            }
            catch (Exception e)
            {

                throw e;
            }

            finally
            {

                Conexao2.obterConexao2().desconectar(cone);
            }

        }


        public void excluir_Cliente(Cliente cli)
        {

            try
            {
                
                SqlCommand sql = new SqlCommand("delete from Cliente where codCli=@codCli", cone);
                sql.Parameters.AddWithValue("@codCli", cli.CodCli);
                sql.ExecuteNonQuery();
            }
            catch (Exception e)
            {

                throw e;
            }

            finally
            {

                Conexao2.obterConexao2().desconectar(cone);


            }
        }



        public void alterar_Cliente(Cliente cli)
        {


            try
            {
                
                SqlCommand sql = new SqlCommand("update Cliente set razaoSocial=@razaoSocial, endereco=@endereco, cidade=@cidade, uf=@uf, contato=@contato, telefone=@telefone where codCli=@codCli", cone);

                sql.Parameters.AddWithValue("@razaoSocial", cli.RazaoSocial);
                sql.Parameters.AddWithValue("@endereco", cli.Endereco);
                sql.Parameters.AddWithValue("@cidade", cli.Cidade);
                sql.Parameters.AddWithValue("@uf", cli.Uf);
                sql.Parameters.AddWithValue("@contato", cli.Contato);
                sql.Parameters.AddWithValue("@telefone", cli.Telefone);
                sql.Parameters.AddWithValue("@codCli", cli.CodCli);

                sql.ExecuteNonQuery();
            }
            catch (Exception e)
            {

                throw e;
            }

            finally
            {

                Conexao2.obterConexao2().desconectar(cone);
            }


        }


        public List<Cliente> pesquisar_ClienteRazao(string nome)
        {

            List<Cliente> retorno = new List<Cliente>();

            try
            {

       
                SqlCommand sql = new SqlCommand("select codCli ,razaoSocial,cnpj,endereco,cidade,uf,contato,telefone from Cliente where razaoSocial like '%" + @nome + "%' order by codCli", cone);


                SqlDataReader dataReader = sql.ExecuteReader();

                while (dataReader.Read())
                {
                    Cliente c = new Cliente();

                    c.CodCli = dataReader.GetInt32(dataReader.GetOrdinal("codCli"));
                    c.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial"));
                    c.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj"));
                    c.Endereco = dataReader.GetString(dataReader.GetOrdinal("endereco"));
                    c.Cidade = dataReader.GetString(dataReader.GetOrdinal("cidade"));
                    c.Uf = dataReader.GetString(dataReader.GetOrdinal("uf"));
                    c.Contato = dataReader.GetString(dataReader.GetOrdinal("contato"));
                    c.Telefone = dataReader.GetString(dataReader.GetOrdinal("telefone"));
                    retorno.Add(c);

                }

                return retorno;

        
            }
            catch (Exception e)
            {

                throw e;
            }

            finally
            {

               Conexao2.obterConexao2().desconectar(cone);


            }

        }

        public List<Cliente> pesquisar_ClienteCnpj(string cnpj)
        {
            List<Cliente> retornoCnpj = new List<Cliente>();
            try
            {
              
                SqlCommand sql = new SqlCommand("select codCli ,razaoSocial,cnpj,endereco,cidade,uf,contato,telefone from Cliente where cnpj like '%" + @cnpj + "%' order by codCli", cone);
                SqlDataReader dataReader = sql.ExecuteReader();
                while (dataReader.Read())
                {
                    Cliente c = new Cliente();

                    c.CodCli = dataReader.GetInt32(dataReader.GetOrdinal("codCli"));
                    c.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial"));
                    c.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj"));
                    c.Endereco = dataReader.GetString(dataReader.GetOrdinal("endereco"));
                    c.Cidade = dataReader.GetString(dataReader.GetOrdinal("cidade"));
                    c.Uf = dataReader.GetString(dataReader.GetOrdinal("uf"));
                    c.Contato = dataReader.GetString(dataReader.GetOrdinal("contato"));
                    c.Telefone = dataReader.GetString(dataReader.GetOrdinal("telefone"));
                    retornoCnpj.Add(c);
                }
                return retornoCnpj;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
              Conexao2.obterConexao2().desconectar(cone);
            }

        }
 
 

    }
}
